<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>onboardsdk: lib/src/DJI_Codec.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">onboardsdk
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_97aefd0d527b934f1d99a682da8fe6a9.html">lib</a></li><li class="navelem"><a class="el" href="dir_a065c5f60305fee3569f887679366939.html">src</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">DJI_Codec.cpp File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Encoding/Message parsing features for <a class="el" href="namespaceDJI.html">DJI</a> onboardSDK library.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="DJI__Codec_8h_source.html">DJI_Codec.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="DJI__Link_8h_source.html">DJI_Link.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="DJI__API_8h_source.html">DJI_API.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtagAES256Context.html">tagAES256Context</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a203d5b93e4077aa273c7013964a31f9e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a203d5b93e4077aa273c7013964a31f9e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>F</b>(x)&#160;&#160;&#160;(((x) &lt;&lt; 1) ^ ((((x) &gt;&gt; 7) &amp; 1) * 0x1b))</td></tr>
<tr class="separator:a203d5b93e4077aa273c7013964a31f9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34a019814bbd4853e0850be57aa81f2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34a019814bbd4853e0850be57aa81f2a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>FD</b>(x)&#160;&#160;&#160;(((x) &gt;&gt; 1) ^ (((x)&amp;1) ? 0x8d : 0))</td></tr>
<tr class="separator:a34a019814bbd4853e0850be57aa81f2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2eadb1491c48daa247b398ebff723435"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2eadb1491c48daa247b398ebff723435"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>BACK_TO_TABLES</b></td></tr>
<tr class="separator:a2eadb1491c48daa247b398ebff723435"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a20b780f42c5e4e126967efc6906f23"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a20b780f42c5e4e126967efc6906f23"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>rj_sbox</b>(x)&#160;&#160;&#160;sbox[(x)]</td></tr>
<tr class="separator:a2a20b780f42c5e4e126967efc6906f23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e948a67f3ad11bc374a063c1bded0aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e948a67f3ad11bc374a063c1bded0aa"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>rj_sbox_inv</b>(x)&#160;&#160;&#160;sboxinv[(x)]</td></tr>
<tr class="separator:a9e948a67f3ad11bc374a063c1bded0aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a33250fc1c35c8aa7449b99b35aae7651"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33250fc1c35c8aa7449b99b35aae7651"></a>
typedef struct <a class="el" href="structtagAES256Context.html">tagAES256Context</a>&#160;</td><td class="memItemRight" valign="bottom"><b>aes256_context</b></td></tr>
<tr class="separator:a33250fc1c35c8aa7449b99b35aae7651"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41cf66b27f6524ea298df0f0e25445b6"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DJI__Codec_8cpp.html#a41cf66b27f6524ea298df0f0e25445b6">ptr_aes256_codec</a>) (<a class="el" href="structtagAES256Context.html">aes256_context</a> *ctx, unsigned char *buf)</td></tr>
<tr class="separator:a41cf66b27f6524ea298df0f0e25445b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a49ea1d11c611228d7840241e61731c5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49ea1d11c611228d7840241e61731c5c"></a>
unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>rj_xtime</b> (unsigned char x)</td></tr>
<tr class="separator:a49ea1d11c611228d7840241e61731c5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a12d4368ff4235a3ba5a4a6db13a3d3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a12d4368ff4235a3ba5a4a6db13a3d3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes_subBytes</b> (unsigned char *buf)</td></tr>
<tr class="separator:a0a12d4368ff4235a3ba5a4a6db13a3d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a748f30a531f9200963c5fd1639d9d091"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a748f30a531f9200963c5fd1639d9d091"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes_subBytes_inv</b> (unsigned char *buf)</td></tr>
<tr class="separator:a748f30a531f9200963c5fd1639d9d091"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac14c14cef906912537bafc98f8cdb1b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac14c14cef906912537bafc98f8cdb1b8"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes_addRoundKey</b> (unsigned char *buf, unsigned char *key)</td></tr>
<tr class="separator:ac14c14cef906912537bafc98f8cdb1b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a169eae97b2c8bfd7de86052b24ff2282"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a169eae97b2c8bfd7de86052b24ff2282"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes_addRoundKey_cpy</b> (unsigned char *buf, unsigned char *key, unsigned char *cpk)</td></tr>
<tr class="separator:a169eae97b2c8bfd7de86052b24ff2282"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3f0d46a8466530a51cf1b3cede86b82"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3f0d46a8466530a51cf1b3cede86b82"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes_shiftRows</b> (unsigned char *buf)</td></tr>
<tr class="separator:aa3f0d46a8466530a51cf1b3cede86b82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad28bc88ea3c27c341ba9683e5c8b5412"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad28bc88ea3c27c341ba9683e5c8b5412"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes_shiftRows_inv</b> (unsigned char *buf)</td></tr>
<tr class="separator:ad28bc88ea3c27c341ba9683e5c8b5412"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a142e145c6d661db6bdd2b6b008480249"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a142e145c6d661db6bdd2b6b008480249"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes_mixColumns</b> (unsigned char *buf)</td></tr>
<tr class="separator:a142e145c6d661db6bdd2b6b008480249"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a264f37304fbf706ffd7ca6f99ab46bdb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a264f37304fbf706ffd7ca6f99ab46bdb"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes_mixColumns_inv</b> (unsigned char *buf)</td></tr>
<tr class="separator:a264f37304fbf706ffd7ca6f99ab46bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3496c9102f53e5ce962fa762ac9fb5bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3496c9102f53e5ce962fa762ac9fb5bc"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes_expandEncKey</b> (unsigned char *k, unsigned char *rc)</td></tr>
<tr class="separator:a3496c9102f53e5ce962fa762ac9fb5bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99654169ac88b404fd8ce516b7d963d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99654169ac88b404fd8ce516b7d963d0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes_expandDecKey</b> (unsigned char *k, unsigned char *rc)</td></tr>
<tr class="separator:a99654169ac88b404fd8ce516b7d963d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab551a74bb90dc3f82ac8d9077332aa34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab551a74bb90dc3f82ac8d9077332aa34"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes256_init</b> (<a class="el" href="structtagAES256Context.html">aes256_context</a> *ctx, unsigned char *k)</td></tr>
<tr class="separator:ab551a74bb90dc3f82ac8d9077332aa34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77cebd9e79ea3d0af109537f183ba3ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77cebd9e79ea3d0af109537f183ba3ef"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes256_done</b> (<a class="el" href="structtagAES256Context.html">aes256_context</a> *ctx)</td></tr>
<tr class="separator:a77cebd9e79ea3d0af109537f183ba3ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61cdb86b7e0069daee93ad0cc27fd555"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61cdb86b7e0069daee93ad0cc27fd555"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>aes256_encrypt_ecb</b> (<a class="el" href="structtagAES256Context.html">aes256_context</a> *ctx, unsigned char *buf)</td></tr>
<tr class="separator:a61cdb86b7e0069daee93ad0cc27fd555"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34034040728c3dc9f29845ac7fb8fe31"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DJI__Codec_8cpp.html#a34034040728c3dc9f29845ac7fb8fe31">aes256_decrypt_ecb</a> (<a class="el" href="structtagAES256Context.html">aes256_context</a> *ctx, unsigned char *buf)</td></tr>
<tr class="separator:a34034040728c3dc9f29845ac7fb8fe31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61aa02171a11a228ac958f52fa98cba1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61aa02171a11a228ac958f52fa98cba1"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>crc16_update</b> (uint16_t crc, uint8_t ch)</td></tr>
<tr class="separator:a61aa02171a11a228ac958f52fa98cba1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2256df116c88c3af8e17454d96a0e34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2256df116c88c3af8e17454d96a0e34"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>crc32_update</b> (uint32_t crc, uint8_t ch)</td></tr>
<tr class="separator:aa2256df116c88c3af8e17454d96a0e34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ee38c658154db9d10b5d07710785a61"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ee38c658154db9d10b5d07710785a61"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>sdk_stream_crc16_calc</b> (const uint8_t *pMsg, size_t nLen)</td></tr>
<tr class="separator:a2ee38c658154db9d10b5d07710785a61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cac58ba07a8f753626432dd163a6546"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cac58ba07a8f753626432dd163a6546"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>sdk_stream_crc32_calc</b> (const uint8_t *pMsg, size_t nLen)</td></tr>
<tr class="separator:a9cac58ba07a8f753626432dd163a6546"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53ccd249a9ddaf58514a4ce6e185e77e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53ccd249a9ddaf58514a4ce6e185e77e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>sdk_stream_prepare_lambda</b> (<a class="el" href="structDJI_1_1onboardSDK_1_1SDKFilter.html">SDKFilter</a> *p_filter)</td></tr>
<tr class="separator:a53ccd249a9ddaf58514a4ce6e185e77e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7d804684c8bb736bfdec86fbcb5a1d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7d804684c8bb736bfdec86fbcb5a1d8"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>encodeData</b> (<a class="el" href="structDJI_1_1onboardSDK_1_1SDKFilter.html">SDKFilter</a> *p_filter, <a class="el" href="structDJI_1_1onboardSDK_1_1Header.html">Header</a> *p_head, <a class="el" href="DJI__Codec_8cpp.html#a41cf66b27f6524ea298df0f0e25445b6">ptr_aes256_codec</a> codec_func)</td></tr>
<tr class="separator:ac7d804684c8bb736bfdec86fbcb5a1d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7908f8130637f1f30f4aaed476bb044"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7908f8130637f1f30f4aaed476bb044"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>sdk_stream_shift_data_lambda</b> (<a class="el" href="structDJI_1_1onboardSDK_1_1SDKFilter.html">SDKFilter</a> *p_filter)</td></tr>
<tr class="separator:ac7908f8130637f1f30f4aaed476bb044"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18620f9a779a29cf873c2ea4b32fe18a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18620f9a779a29cf873c2ea4b32fe18a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>sdk_stream_update_reuse_part_lambda</b> (<a class="el" href="structDJI_1_1onboardSDK_1_1SDKFilter.html">SDKFilter</a> *p_filter)</td></tr>
<tr class="separator:a18620f9a779a29cf873c2ea4b32fe18a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09d943d43135f33c3d39c928999a7a97"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a09d943d43135f33c3d39c928999a7a97"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>calculateCRC</b> (void *p_data)</td></tr>
<tr class="separator:a09d943d43135f33c3d39c928999a7a97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1474dd64e6daba28cbbfe6fc94173093"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1474dd64e6daba28cbbfe6fc94173093"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>transformTwoByte</b> (const char *pstr, unsigned char *pdata)</td></tr>
<tr class="separator:a1474dd64e6daba28cbbfe6fc94173093"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:abbb6f385c467cfd964a68eeb6caaa04f"><td class="memItemLeft" align="right" valign="top">const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>sbox</b> [256]</td></tr>
<tr class="separator:abbb6f385c467cfd964a68eeb6caaa04f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb9909a74c403f319083444a6b67ac36"><td class="memItemLeft" align="right" valign="top">const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>sboxinv</b> [256]</td></tr>
<tr class="separator:abb9909a74c403f319083444a6b67ac36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad45fc62c93ecd1533cd7accbb3a54c31"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>crc_tab16</b> []</td></tr>
<tr class="separator:ad45fc62c93ecd1533cd7accbb3a54c31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae278265f2f4391d0e1482d647ad6f297"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae278265f2f4391d0e1482d647ad6f297"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>crc_tab32</b> []</td></tr>
<tr class="separator:ae278265f2f4391d0e1482d647ad6f297"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a133a11c8985e3ff881e648e4646d019d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a133a11c8985e3ff881e648e4646d019d"></a>
const unsigned short&#160;</td><td class="memItemRight" valign="bottom"><b>CRC_INIT</b> = 0x3AA3</td></tr>
<tr class="separator:a133a11c8985e3ff881e648e4646d019d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Encoding/Message parsing features for <a class="el" href="namespaceDJI.html">DJI</a> onboardSDK library. </p>
<dl class="section version"><dt>Version</dt><dd>3.1.7 </dd></dl>
<dl class="section date"><dt>Date</dt><dd>July 1st, 2016</dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>2016 <a class="el" href="namespaceDJI.html">DJI</a>. All rights reserved. </dd></dl>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="a41cf66b27f6524ea298df0f0e25445b6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* ptr_aes256_codec) (<a class="el" href="structtagAES256Context.html">aes256_context</a> *ctx, unsigned char *buf)</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>A full command, [===========XOOOOOOO] [===========XOOOOOOO---------------&mdash;##########] curr filter buffer ^ ^ | |_____ remain data |__________________________________________ cur cmd data</dd></dl>
<p>after prepare</p>
<p>[OOOOOOO---------------------------&mdash;##########]</p>
<p>[===========X] has been clear</p>
<p>pre-cmd 7 byte has been saved, and continue to filter </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a34034040728c3dc9f29845ac7fb8fe31"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void aes256_decrypt_ecb </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structtagAES256Context.html">aes256_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>buf</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>exit when &ndash;i == 0; </dd></dl>

</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="ad45fc62c93ecd1533cd7accbb3a54c31"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t crc_tab16[]</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line">  0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780,</div><div class="line">  0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1,</div><div class="line">  0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801,</div><div class="line">  0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40,</div><div class="line">  0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680,</div><div class="line">  0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0,</div><div class="line">  0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501,</div><div class="line">  0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41,</div><div class="line">  0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981,</div><div class="line">  0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1,</div><div class="line">  0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200,</div><div class="line">  0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141,</div><div class="line">  0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480,</div><div class="line">  0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0,</div><div class="line">  0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01,</div><div class="line">  0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40,</div><div class="line">  0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381,</div><div class="line">  0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0,</div><div class="line">  0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01,</div><div class="line">  0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40,</div><div class="line">  0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81,</div><div class="line">  0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1,</div><div class="line">  0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100,</div><div class="line">  0x81c1, 0x8081, 0x4040,</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="abbb6f385c467cfd964a68eeb6caaa04f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned char sbox[256]</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line">  0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab,</div><div class="line">  0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4,</div><div class="line">  0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71,</div><div class="line">  0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,</div><div class="line">  0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6,</div><div class="line">  0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb,</div><div class="line">  0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45,</div><div class="line">  0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,</div><div class="line">  0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44,</div><div class="line">  0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a,</div><div class="line">  0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49,</div><div class="line">  0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,</div><div class="line">  0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25,</div><div class="line">  0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e,</div><div class="line">  0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1,</div><div class="line">  0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,</div><div class="line">  0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb,</div><div class="line">  0x16</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="abb9909a74c403f319083444a6b67ac36"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned char sboxinv[256]</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line">  0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7,</div><div class="line">  0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde,</div><div class="line">  0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42,</div><div class="line">  0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,</div><div class="line">  0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c,</div><div class="line">  0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15,</div><div class="line">  0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7,</div><div class="line">  0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,</div><div class="line">  0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc,</div><div class="line">  0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad,</div><div class="line">  0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d,</div><div class="line">  0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,</div><div class="line">  0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8,</div><div class="line">  0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51,</div><div class="line">  0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0,</div><div class="line">  0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,</div><div class="line">  0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c,</div><div class="line">  0x7d</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Aug 5 2016 13:26:07 for onboardsdk by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
